package com.css.fxfzypg.modules.maps.service;

import com.css.fxfzypg.modules.maps.entity.DistrictEntity;

import java.math.BigDecimal;
import java.util.List;

public interface TaskRegionMapService {
    //根据任务表类型、任务ID，查询行政区划--省|市|区县的名称和code列表
    public List<List<String>> queryProvinceCityCountyNameCodeListByTaskId(String type,String taskId);

    //根据任务表类型、任务ID，查询行政区划--省|市|区县|乡镇的名称和code列表
    public List<List<String>> queryProvinceCityCountyStreetNameCodeListByTaskId(String type,String taskId);

    //根据经纬度，查询行政区划--省|市|区县的名称和code列表
    public List<List<String>> queryProvinceCityCountyNameCodeListByLonLat(String lon,String lat);

    //根据地图圈选区域，查询行政区划--省|市|区县的名称和code列表
    public List<List<String>> queryProvinceCityCountyNameCodeListByGeomText(String geomText);

    //根据地图圈选区域，查询行政区划--省|市|区县|乡镇的名称和code列表
    public List<List<String>> queryProvinceCityCountyStreetNameCodeListByGeomText(String geomText);

    //根据任务ID、烈度、（区县|乡镇）统计人员死亡数
    public List<List<String>> countPbeInjuries(String taskId,String dzIntensity,String qcType);

    //根据任务ID、烈度、（区县|乡镇）统计经济损失（万元）
    public List<List<String>> countPbeLosses(String taskId,String dzIntensity,String qcType);

    //根据任务ID、烈度、（区县|乡镇）统计需紧急安置人数
    public List<List<String>> countPbePlant(String taskId,String dzIntensity,String qcType);

    //校验并保存
    public String checkSHPFiles(String filePath, String province, String city, String area, String formatDate, String userID);

    //zyt--根据预评估任务ID获取任务区域和地震影响场的并集的范围包括的省市区县名称
    public List<DistrictEntity> getProvinceCityCountyListByTaskId(String taskId);

    //获取任务区域合并后的空间数据
    public String getTaskRegionGeomUnion(String taskRegion);

    //处理空间数据，判断存在自相交则获取修复后的空间数据，否则返回原空间数据wkt
    public String getGeomValidWkt(String geomText);

    //校验空间数据是否自相交
    public String isGeomValid(String geomText);

    //修复空间数据自相交，获取修复后的空间数据
    public String makeGeomValid(String geomText);

    //shp导入任务区域校验并获取空间数据
    public String checkSHPFiles1(String filePath);

    //txt导入任务区域校验并获取空间数据
    public String checkTxtFiles(String filePath);

    //根据空间数据wkt获取投影坐标EPSG
    public int getEPSGFromGeomText(String geomText);

    //获取区域范围extent经纬度
    public List<Double> getGeomExtentLonLat(String geomText);

    //获取中心点经纬度
    public List<String> getCenterLonLat(String geomText);

    //根据经度获取投影坐标--3度带
    public int getEPSGFromLon3(double srcLon);

    //根据经度获取投影坐标--6度带
    public int getEPSGFromLon6(double srcLon);

    //根据区域投影到6度带或3度带，计算投影面积之和（平方公里)
    public BigDecimal getAreaByGeomEpsgCount(String geomText);

    //按6度带投影计算空间数据面积
    public String getAreaByGeomEPSG6(String geomText);

    //按3度带投影计算空间数据面积
    public String getAreaByGeomEPSG3(String geomText);

    //根据行政区划code按6度带投影计算空间数据面积
    public String getAreaByCodeEPSG6(String code);

    //根据行政区划code按3度带投影计算空间数据面积
    public String getAreaByCodeEPSG3(String code);
}
